;(function ($, window, document, undefined) {

  var pluginName = "metisMenu",
      defaults = {
        toggle: true
      };

  function Plugin(element, options) {
    this.element = element;
    this.settings = $.extend({}, defaults, options);
    this._defaults = defaults;
    this._name = pluginName;
    this.init();
  }

  Plugin.prototype = {
    init: function () {

      var $this = $(this.element),
          $toggle = this.settings.toggle;

      $this.find('li.active').has('ul').children('ul').addClass('collapse in');
      $this.find('li').not('.active').has('ul').children('ul').addClass(
          'collapse');

      $this.find('li').has('ul').children('a').on('click', function (e) {
        e.preventDefault();

        $(this).parent('li').toggleClass('active').children('ul').collapse(
            'toggle');

        if ($toggle) {
          $(this).parent('li').siblings().removeClass('active').children(
              'ul.in').collapse('hide');
        }
      });
    }
  };

  $.fn[pluginName] = function (options) {
    return this.each(function () {
      if (!$.data(this, "plugin_" + pluginName)) {
        $.data(this, "plugin_" + pluginName, new Plugin(this, options));
      }
    });
  };

})(jQuery, window, document);
